home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Micro Mail / MicroMail.jar / AccountHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-14  |  5.2 KB  |  308 lines

  1. import com.siemens.mp.io.File;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataInputStream;
  5. import java.io.DataOutputStream;
  6.  
  7. public class AccountHandler {
  8.    private static int retCode;
  9.    private static int iRecordsNo = -1;
  10.    private static final String fileName;
  11.    private static final String tempFileName = "Accounts.tmp";
  12.    private static final int buffLen = 500;
  13.  
  14.    static {
  15.       fileName = "Accounts" + Globals.fileExtension;
  16.    }
  17.  
  18.    private static void closeFile() {
  19.       try {
  20.          Globals.file.close(Globals.fileDesc);
  21.       } catch (Exception var0) {
  22.       }
  23.  
  24.    }
  25.  
  26.    public static void closeIDsFile() {
  27.       try {
  28.          Globals.file2.close(Globals.fileDesc2);
  29.       } catch (Exception var0) {
  30.       }
  31.  
  32.    }
  33.  
  34.    public static void deleteRecord(Account var0) {
  35.       try {
  36.          try {
  37.             File var10000 = Globals.file2;
  38.             int var1 = File.delete(var0.accountName + Globals.fileExtension);
  39.             var10000 = Globals.file;
  40.             var1 = File.delete("Accounts.tmp");
  41.          } catch (Exception var4) {
  42.          }
  43.  
  44.          Globals.fileDesc = Globals.file.open(fileName);
  45.          Globals.fileDesc2 = Globals.file2.open("Accounts.tmp");
  46.  
  47.          for(int var7 = 0; var7 < var0.ID; ++var7) {
  48.             Globals.file.seek(Globals.fileDesc, 500 * var7);
  49.             Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  50.             Globals.file2.seek(Globals.fileDesc2, 500 * var7);
  51.             Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 500);
  52.          }
  53.  
  54.          for(int var2 = var0.ID + 1; var2 < iRecordsNo; ++var2) {
  55.             Globals.file.seek(Globals.fileDesc, 500 * var2);
  56.             Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  57.             Globals.file2.seek(Globals.fileDesc2, 500 * (var2 - 1));
  58.             Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 500);
  59.          }
  60.  
  61.          Globals.file.close(Globals.fileDesc);
  62.          Globals.file2.close(Globals.fileDesc2);
  63.          File var9 = Globals.file;
  64.          File.delete(fileName);
  65.          var9 = Globals.file2;
  66.          int var3 = File.rename("Accounts.tmp", fileName);
  67.       } catch (Exception var5) {
  68.          MicroMail.printInfo(var5.getClass().getName() + ": " + ((Throwable)var5).getMessage());
  69.          ((Throwable)var5).printStackTrace();
  70.       }
  71.  
  72.    }
  73.  
  74.    public static Account getAccount(int var0) {
  75.       openFile();
  76.  
  77.       try {
  78.          if (Globals.file.length(Globals.fileDesc) < var0 * 500) {
  79.             return null;
  80.          }
  81.       } catch (Exception var5) {
  82.       }
  83.  
  84.       Account var1 = new Account();
  85.  
  86.       try {
  87.          Globals.file.seek(Globals.fileDesc, 500 * var0);
  88.          Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  89.          ByteArrayInputStream var2 = new ByteArrayInputStream(Globals.byteArray);
  90.          DataInputStream var3 = new DataInputStream(var2);
  91.          var1.ID = var0;
  92.          var1.accountName = var3.readUTF();
  93.          var1.popHost = var3.readUTF();
  94.          var1.popPort = var3.readInt();
  95.          var1.smtpHost = var3.readUTF();
  96.          var1.smtpPort = var3.readInt();
  97.          var1.accountActive = var3.readBoolean();
  98.          var1.downloadMail = var3.readBoolean();
  99.          var1.emailName = var3.readUTF();
  100.          var1.emailAddress = var3.readUTF();
  101.          var1.replyAddress = var3.readUTF();
  102.          var1.username = var3.readUTF();
  103.          var1.password = var3.readUTF();
  104.          var3.close();
  105.          Object var7 = null;
  106.          var2.close();
  107.          Object var6 = null;
  108.       } catch (Exception var4) {
  109.       }
  110.  
  111.       closeFile();
  112.       return var1;
  113.    }
  114.  
  115.    public static void getActiveAccount() {
  116.    }
  117.  
  118.    public static int getCount() {
  119.       int var0 = openFile();
  120.       closeFile();
  121.       return var0;
  122.    }
  123.  
  124.    private static int openFile() {
  125.       try {
  126.          Globals.fileDesc = Globals.file.open(fileName);
  127.          iRecordsNo = Globals.file.length(Globals.fileDesc) / 500;
  128.          return iRecordsNo;
  129.       } catch (Exception var0) {
  130.          return -1;
  131.       }
  132.    }
  133.  
  134.    public static void openIDsFile(String var0) {
  135.       try {
  136.          Globals.fileDesc2 = Globals.file2.open(var0);
  137.       } catch (Exception var1) {
  138.       }
  139.  
  140.    }
  141.  
  142.    public static String[] readIDs() {
  143.       try {
  144.          if (Globals.file2.length(Globals.fileDesc2) <= 0) {
  145.             return null;
  146.          } else {
  147.             Globals.file2.seek(Globals.fileDesc2, 0);
  148.             int var0 = readInt();
  149.             String[] var1 = new String[var0];
  150.  
  151.             for(int var2 = 0; var2 < var0; ++var2) {
  152.                var1[var2] = readStr();
  153.             }
  154.  
  155.             return var1;
  156.          }
  157.       } catch (Exception var3) {
  158.          return null;
  159.       }
  160.    }
  161.  
  162.    public static int readInt() {
  163.       try {
  164.          Globals.file2.read(Globals.fileDesc2, Globals.byteArray, 0, 2);
  165.          int var0 = Globals.byteArray[0];
  166.          if (var0 < 0) {
  167.             var0 &= 255;
  168.          }
  169.  
  170.          int var1 = Globals.byteArray[1];
  171.          if (var1 < 0) {
  172.             var1 &= 255;
  173.          }
  174.  
  175.          int var2 = var0 << 8 | var1;
  176.          return var2;
  177.       } catch (Exception var3) {
  178.          return -1;
  179.       }
  180.    }
  181.  
  182.    public static String readStr() {
  183.       try {
  184.          int var0 = readInt();
  185.          Globals.file2.read(Globals.fileDesc2, Globals.byteArray, 0, var0);
  186.          String var1 = new String(Globals.byteArray, 0, var0);
  187.          return var1;
  188.       } catch (Exception var2) {
  189.          return null;
  190.       }
  191.    }
  192.  
  193.    public static void repairIDsFiles() {
  194.       int var1 = 0;
  195.       int var2 = getCount();
  196.       if (var2 > 0) {
  197.          for(int var3 = 0; var3 < var2; ++var3) {
  198.             Account var0 = getAccount(var3);
  199.             String var4 = var0.accountName + Globals.tmpFileExtension;
  200.  
  201.             try {
  202.                File var10000 = Globals.file;
  203.                var1 = File.exists(var4);
  204.             } catch (Exception var9) {
  205.                var1 = 0;
  206.             }
  207.  
  208.             if (var1 != 0) {
  209.                openIDsFile(var4);
  210.                String[] var5 = readIDs();
  211.                closeIDsFile();
  212.                if (var5 != null) {
  213.                   openIDsFile(var0.accountName + Globals.fileExtension);
  214.                   int var6 = readInt();
  215.                   if (var6 < 0) {
  216.                      var6 = 0;
  217.                   }
  218.  
  219.                   for(int var7 = 0; var7 < var5.length; ++var7) {
  220.                      writeID(var5[var7], var6 + var7 + 1);
  221.                   }
  222.  
  223.                   closeIDsFile();
  224.                }
  225.  
  226.                try {
  227.                   File var11 = Globals.file;
  228.                   File.delete(var4);
  229.                } catch (Exception var8) {
  230.                }
  231.             }
  232.          }
  233.       }
  234.  
  235.    }
  236.  
  237.    public static void storeAccount(Account var0, String var1) {
  238.       openFile();
  239.  
  240.       try {
  241.          ByteArrayOutputStream var3 = new ByteArrayOutputStream();
  242.          DataOutputStream var4 = new DataOutputStream(var3);
  243.          var4.writeUTF(var0.accountName);
  244.          var4.writeUTF(var0.popHost);
  245.          var4.writeInt(var0.popPort);
  246.          var4.writeUTF(var0.smtpHost);
  247.          var4.writeInt(var0.smtpPort);
  248.          var4.writeBoolean(var0.accountActive);
  249.          var4.writeBoolean(var0.downloadMail);
  250.          var4.writeUTF(var0.emailName);
  251.          var4.writeUTF(var0.emailAddress);
  252.          var4.writeUTF(var0.replyAddress);
  253.          var4.writeUTF(var0.username);
  254.          var4.writeUTF(var0.password);
  255.          byte[] var2 = var3.toByteArray();
  256.          var4.close();
  257.          Object var7 = null;
  258.          var3.close();
  259.          Object var6 = null;
  260.          if (var0.ID < 0) {
  261.             Globals.file.seek(Globals.fileDesc, Globals.file.length(Globals.fileDesc));
  262.             Globals.file.write(Globals.fileDesc, var2, 0, 500);
  263.             var0.ID = iRecordsNo++;
  264.          } else {
  265.             Globals.file.seek(Globals.fileDesc, 500 * var0.ID);
  266.             Globals.file.write(Globals.fileDesc, var2, 0, 500);
  267.             File var10000 = Globals.file2;
  268.             File.rename(var1 + Globals.fileExtension, var0.accountName + Globals.fileExtension);
  269.          }
  270.       } catch (Exception var5) {
  271.       }
  272.  
  273.       closeFile();
  274.       System.gc();
  275.    }
  276.  
  277.    public static void writeID(String var0, int var1) {
  278.       try {
  279.          Globals.file2.seek(Globals.fileDesc2, 0);
  280.          writeInt(var1);
  281.          Globals.file2.seek(Globals.fileDesc2, Globals.file2.length(Globals.fileDesc2));
  282.          writeStr(var0);
  283.       } catch (Exception var2) {
  284.       }
  285.  
  286.    }
  287.  
  288.    public static void writeInt(int var0) {
  289.       Globals.byteArray[0] = (byte)((var0 & '\uff00') >> 8);
  290.       Globals.byteArray[1] = (byte)(var0 & 255);
  291.  
  292.       try {
  293.          Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 2);
  294.       } catch (Exception var1) {
  295.       }
  296.  
  297.    }
  298.  
  299.    public static void writeStr(String var0) {
  300.       try {
  301.          writeInt(var0.length());
  302.          Globals.file2.write(Globals.fileDesc2, var0.getBytes(), 0, var0.length());
  303.       } catch (Exception var1) {
  304.       }
  305.  
  306.    }
  307. }
  308.